--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
tests/backend/test_plugin_python_runtime.py c0b0ddffd735a0d007c1be9a5e8563ec42fdafc0 (c0b0ddff) Text, 2.43 KB
T8b949e# SPDX-License-Identifier: 0BSD
Tff7b72import T7ee787json
Tff7b72import T7ee787pytest
Tff7b72from T7ee787meshchatxT7ee787.T7ee787srcT7ee787.T7ee787backendT7ee787.T7ee787plugin_manager Tff7b72import Te6edf3PluginManager
Te6edf3PYTHON_BACKEND Tff7b72= Ta5d6ff"""
Ta5d6ffdef activate(host):
Ta5d6ff host.storage_set(Ta5d6ff"Ta5d6ffactivatedTa5d6ff"Ta5d6ff, Ta5d6ff"Ta5d6ff1Ta5d6ff"Ta5d6ff)
Ta5d6ffdef invoke(method, args, host=None):
Ta5d6ff if host is None:
Ta5d6ff host = args
Ta5d6ff args = method
Ta5d6ff method = Ta5d6ff"Ta5d6ffinvokeTa5d6ff"
Ta5d6ff if method == Ta5d6ff"Ta5d6ffechoTa5d6ff"Ta5d6ff:
Ta5d6ff return Ta5d6ff{Ta5d6ff"Ta5d6ffechoTa5d6ff"Ta5d6ff: args.get(Ta5d6ff"Ta5d6ffvalueTa5d6ff"Ta5d6ff), Ta5d6ff"Ta5d6ffactivatedTa5d6ff"Ta5d6ff: host.storage_get(Ta5d6ff"Ta5d6ffactivatedTa5d6ff"Ta5d6ff)}
Ta5d6ff raise ValueError(Ta5d6ff"Ta5d6ffunknownTa5d6ff"Ta5d6ff)
Ta5d6ffdef on_hook(hook, payload, host):
Ta5d6ff host.storage_set(Ta5d6ff"Ta5d6fflast_hookTa5d6ff"Ta5d6ff, hook)
Ta5d6ff return Ta5d6ff{Ta5d6ff"Ta5d6ffhookTa5d6ff"Ta5d6ff: hook}
Ta5d6ff"""
Tff7b72def Td2a8fftest_python_backend_grants_invoke_hooksTb4b4b4(Te6edf3tmp_pathTb4b4b4)Tb4b4b4:
Te6edf3source Tff7b72= Te6edf3tmp_path Tff7b72/ Ta5d6ff"Ta5d6ffsrcTa5d6ff"
Te6edf3sourceTff7b72.Td2a8ffmkdirTb4b4b4(Tb4b4b4)
Tb4b4b4(Te6edf3source Tff7b72/ Ta5d6ff"Ta5d6ffplugin.jsonTa5d6ff"Tb4b4b4)Tff7b72.Td2a8ffwrite_textTb4b4b4(
Te6edf3jsonTff7b72.Td2a8ffdumpsTb4b4b4(
Tb4b4b4{
Ta5d6ff"Ta5d6ffidTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffcom.example.pythonTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffversionTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff1.0.0Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffapiVersionTa5d6ff"Tb4b4b4: T79c0ff1Tb4b4b4,
Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffPython PluginTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffbackendTa5d6ff"Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffentryTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffbackend/main.pyTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffpythonTa5d6ff"Tb4b4b4}Tb4b4b4,
Ta5d6ff"Ta5d6ffpermissionsTa5d6ff"Tb4b4b4: Tb4b4b4{
Ta5d6ff"Ta5d6ffhooksTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffannounce.receivedTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6ffstorageTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffisolatedTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffmanagersTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffdestinationPath.readTa5d6ff"Tb4b4b4]Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Te6edf3encodingTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4,
Tb4b4b4)
Te6edf3backend Tff7b72= Te6edf3source Tff7b72/ Ta5d6ff"Ta5d6ffbackendTa5d6ff"
Te6edf3backendTff7b72.Td2a8ffmkdirTb4b4b4(Tb4b4b4)
Tb4b4b4(Te6edf3backend Tff7b72/ Ta5d6ff"Ta5d6ffmain.pyTa5d6ff"Tb4b4b4)Tff7b72.Td2a8ffwrite_textTb4b4b4(Te6edf3PYTHON_BACKENDTb4b4b4, Te6edf3encodingTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)
Tff7b72class T56d364FakeAppTb4b4b4:
Te6edf3reticulum Tff7b72= Tffa657objectTb4b4b4(Tb4b4b4)
Te6edf3rnpath_handler Tff7b72= Tff7b72None
Te6edf3plugins_enabled Tff7b72= Tff7b72True
Te6edf3manager Tff7b72= Te6edf3PluginManagerTb4b4b4(Tffa657strTb4b4b4(Te6edf3tmp_path Tff7b72/ Ta5d6ff"Ta5d6ffstorageTa5d6ff"Tb4b4b4)Tb4b4b4, Te6edf3appTff7b72=Te6edf3FakeAppTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3installed Tff7b72= Te6edf3managerTff7b72.Td2a8ffinstall_from_directoryTb4b4b4(
Tffa657strTb4b4b4(Te6edf3sourceTb4b4b4)Tb4b4b4,
Te6edf3granted_permissionsTff7b72=Tb4b4b4[
Ta5d6ff"Ta5d6ffhooks:announce.receivedTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffstorage:isolatedTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffmanagers:destinationPath.readTa5d6ff"Tb4b4b4,
Tb4b4b4]Tb4b4b4,
Tb4b4b4)
Tff7b72assert Te6edf3installedTb4b4b4[Ta5d6ff"Ta5d6ffbackend_typeTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffpythonTa5d6ff"
Te6edf3enabled Tff7b72= Te6edf3managerTff7b72.Td2a8ffenableTb4b4b4(Ta5d6ff"Ta5d6ffcom.example.pythonTa5d6ff"Tb4b4b4)
Tff7b72assert Te6edf3enabledTb4b4b4[Ta5d6ff"Ta5d6ffenabledTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72True
Tff7b72assert Te6edf3managerTff7b72.Td2a8ffstorage_getTb4b4b4(Ta5d6ff"Ta5d6ffcom.example.pythonTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffactivatedTa5d6ff"Tb4b4b4) Tff7b72== Ta5d6ff"Ta5d6ff1Ta5d6ff"
Te6edf3result Tff7b72= Te6edf3managerTff7b72.Td2a8ffinvokeTb4b4b4(Ta5d6ff"Ta5d6ffcom.example.pythonTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffechoTa5d6ff"Tb4b4b4, Tb4b4b4{Ta5d6ff"Ta5d6ffvalueTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffhiTa5d6ff"Tb4b4b4}Tb4b4b4)
Tff7b72assert Te6edf3resultTb4b4b4[Ta5d6ff"Ta5d6ffechoTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffhiTa5d6ff"
Tff7b72assert Te6edf3resultTb4b4b4[Ta5d6ff"Ta5d6ffactivatedTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ff1Ta5d6ff"
Te6edf3managerTff7b72.Td2a8ffdispatch_hookTb4b4b4(Ta5d6ff"Ta5d6ffcom.example.pythonTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffannounce.receivedTa5d6ff"Tb4b4b4, Tb4b4b4{Ta5d6ff"Ta5d6ffxTa5d6ff"Tb4b4b4: T79c0ff1Tb4b4b4}Tb4b4b4)
Tff7b72assert Te6edf3managerTff7b72.Td2a8ffstorage_getTb4b4b4(Ta5d6ff"Ta5d6ffcom.example.pythonTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fflast_hookTa5d6ff"Tb4b4b4) Tff7b72== Ta5d6ff"Ta5d6ffannounce.receivedTa5d6ff"
Tff7b72with Te6edf3pytestTff7b72.Td2a8ffraisesTb4b4b4(Tf85149PermissionErrorTb4b4b4)Tb4b4b4:
Te6edf3managerTff7b72.Td2a8ffcall_managerTb4b4b4(Ta5d6ff"Ta5d6ffcom.example.pythonTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffrnsLink.openTa5d6ff"Tb4b4b4, Tb4b4b4{Tb4b4b4}Tb4b4b4)
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────